﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;

namespace Cotizav.PRESENTACION.Familia
{
    public partial class IUMarca : UserControl
    {
        CtrlMarca ctMarca;
        CtrlModelo ctModelo;

        List<MODELO> modelos;
        
        public IUMarca()
        {
            InitializeComponent();

            ctMarca = new CtrlMarca();
            ctModelo = new CtrlModelo();

            modelos = new List<MODELO>();
        }

        internal void mostrarDatos(string idSelectedNode)
        {
            MARCA marca = ctMarca.getMarca(idSelectedNode);
            modelos = ctModelo.getListModelo(idSelectedNode);

            txtMarca.Text = marca.nombreMarca;
            gbInformacionBasica.Tag = idSelectedNode;

            gridModelo.DataSource = null;
            gridModelo.DataSource = modelos;
            gridModelo.ClearSelection();
            setRowsReadOnly();            
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridModelo.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void actualizarArbolFamilias()
        {
            PanelFamilia panfamilia = this.ParentForm as PanelFamilia;
            panfamilia.loadTreeFamilia();
        }

        private void gridModelo_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridModelo.DataSource != null)
            {
                gridModelo.Columns["idModelo"].Visible = false;
                gridModelo.Columns["nombreModelo"].HeaderText = "Modelo";
                gridModelo.Columns["nombreModelo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridModelo.Columns["idMarca"].Visible = false;
                gridModelo.Columns["eliminado"].Visible = false;
                gridModelo.Columns["MARCA"].Visible = false;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (gbInformacionBasica.Tag != null)
            {
                if (!string.IsNullOrWhiteSpace(txtAddModelo.Text))
                {
                    if (!ctModelo.verificarNombreModelo(txtAddModelo.Text, gbInformacionBasica.Tag.ToString()))
                    {
                        MODELO mod = new MODELO()
                        {
                            nombreModelo = txtAddModelo.Text,
                            idMarca = gbInformacionBasica.Tag.ToString(),
                            eliminado = 0
                        };

                        ctModelo.registrarModelo(mod);
                        gridModelo.DataSource = null;
                        gridModelo.DataSource = ctModelo.getListModelo(gbInformacionBasica.Tag.ToString());                        
                        gridModelo.ClearSelection();
                        setRowsReadOnly();

                        this.actualizarArbolFamilias();
                        txtAddModelo.ResetText();
                    }
                    else
                    {
                        MessageBox.Show("El nombre de modelo ya se encuentra registrado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        txtAddModelo.ResetText();
                    }
                }
                else
                {
                    MessageBox.Show("El campo para ingresar el modelo se encuentra vacío", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                } 
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridModelo.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar los modelos seleccionados?", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                {
                    if (gbInformacionBasica.Tag != null)
                    {
                        //se procede a eliminar
                        bool result = false;
                        foreach (DataGridViewRow dr in gridModelo.SelectedRows)
                        {
                            ctModelo.eliminarModelo(modelos[dr.Index]);
                            result = true;
                        }

                        if (result)
                        {
                            MessageBox.Show("Modelos eliminados", "Cotizav", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            modelos = ctModelo.getListModelo(gbInformacionBasica.Tag.ToString());
                            gridModelo.DataSource = null;
                            gridModelo.DataSource = modelos;                            
                            gridModelo.ClearSelection();
                            setRowsReadOnly();

                            this.actualizarArbolFamilias();
                        }
                    }
                }
            }
        }

        private void btnCambiar_Click(object sender, EventArgs e)
        {
            if (gbInformacionBasica.Tag != null)
            {
                if (!string.IsNullOrWhiteSpace(txtMarca.Text))
                {
                    if (!ctMarca.verificarNombreMarca(txtMarca.Text))
                    {
                        MARCA m = new MARCA()
                        {
                            nombreMarca = txtMarca.Text
                        };

                        bool result = ctMarca.actualizarMarca(gbInformacionBasica.Tag.ToString(), m);

                        if (result)
                        {
                            MessageBox.Show("Nombre de marca modificada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                            modelos = ctModelo.getListModelo(gbInformacionBasica.Tag.ToString());
                            gridModelo.DataSource = null;
                            gridModelo.DataSource = modelos;                            
                            gridModelo.ClearSelection();
                            setRowsReadOnly();

                            this.actualizarArbolFamilias();
                        }
                    }
                    else
                    {
                        MessageBox.Show("El nombre de la marca ya se encuentra registrado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        txtMarca.ResetText();
                    }
                }
                else
                {
                    MessageBox.Show("Campo de marca se encuentra vacío", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
        }
    }
}
